Eliminating Range Checks using Static Single Assignment Form

نویسندگان

  • K John Gough
  • Herbert Klaeren
چکیده

We propose a new method of eliminating range checks in connection with array index expressions and assignments to variables of subrange types. Contrary to the approaches documented in the literature, we work on an extended static single assignment form (XSA) very near the target level. This gives signiicant advantages over previous attempts since many questions don't occur at all or else in a simpler form in the XSA. The technique has been implemented in a family of Modula-2 and Oberon-2 compilers.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Array bounds check elimination in the context of deoptimization

Whenever an array element is accessed, Java virtual machines execute a compare instruction to ensure that the index value is within the valid bounds. This reduces the execution speed of Java programs. Array bounds check elimination identifies situations in which such checks are redundant and can be removed. We present an array bounds check elimination algorithm for the Java HotSpot VM based on ...

متن کامل

Compile Time Elimination of Null- and Bounds-Checks

SafeTSA is a new type safe intermediate representation for mobile code based on static single assignment form. We developed SafeTSA as an alternative to the Java Virtual Machine. Programs in SafeTSA contain explicit nulland bounds-check instructions, allowing their elimination. Type safety is maintained by enforcing the use of only nulland bounds-checked values in dereference and index operatio...

متن کامل

Eliminating Redundant Join-Set Computations in Static Single Assignment

The seminal algorithm developed by Ron Cytron, Jeanne Ferrante and colleagues in 1989 for the placement of φ-nodes in a control flow graph is still widely used in commercial compilers. Placing φ-nodes is necessary when converting a program representation to Static Single Assignment (SSA) form. This paper shows that if a variable x is defined in a set of basic blocks A(x), then the iterated join...

متن کامل

TECHNICAL REPORT Identifying Unnecessary Bounds Checks Through Block-Qualified Variable Elimination

Java’s memory-safety relies on the Java Virtual Machine checking that each access to an array does not exceed the bounds of that array. When static analysis can determine that some array access instruction will never use an out of bounds index, the cost of dynamically checking the index each time the instruction is executed can be avoided. This report introduces Block-Qualified Variable Elimina...

متن کامل

Using Software Metrics to Evaluate Static Single Assignment Form in GCC

Over the past 20 years, static single assignment form (SSA) has risen to become the compiler intermediate representation of choice. Compiler developers cite many qualitative reasons for choosing SSA. However in this study, we present clear quantitative benefits of SSA, by applying several standard software metrics to compiler intermediate code in both SSA and non-SSA forms. The average complexi...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1994